package com.bird.设计原则.单一职责原则.接口层面的单一职责;

/**
 * @data 2022/1/9 9:52
 * @author: bird
 * @description: 课程的公共的接口
 *
 *
 */
public interface ICourse {



    // 获取课程的名称
    String getCourseName();
    // 获取课程的内容
    byte[] getCourseVideo();

      // 学习课程
    void studyCourse();
    // 课程退款
    void refundCourse();


/*
*为什么将ICourse接口拆分成两个
* 一个是：ICourseContent,一个是：ICourseManager
* 原因是：getCourseName()和getCourseVideo()这两个是属于课程的内容
*       而studyCourse()和refundCourse()这两个属于课程的管理。
*   如果课程管理发生的变更 那么将会影响获取课程的内容。所以将他们给
*    拆出来 这个是在接口层面的上的单一职责。这样的话 接口的变更只会影响
*    这个接口的实现类而已。
*   举个例子：
*      商品合件的功能：
*      1: 查询列表 查询详情 导出 都属商品的内容  可以单独定义一个接口 叫做 GoodsContent
*      2: 商品的修改 删除  都属商品的管理内容  可以单独定义一个接口 叫做GoodsManager
*      3: 可以定义一个或者两个实现类分别实现这两个接口完成相应的业务逻辑
*      4： 在controller层上面控制调用那个接口。
**/

}
